package com.jlhlyby.list;

import java.util.ArrayList;
import java.util.List;

/**
 *       1
 *      1 1
 *     1 2 1
 *    1 3 3 1
 *   1 4 6 4 1
 */
public class Generate {
    public static void main(String[] args) {
        System.out.println(new Generate().generate(5));
    }
    public List<List<Integer>> generate(int numRows) {
        return generate(numRows,new ArrayList<>());
    }

    public List<List<Integer>> generate(int numRows, List<List<Integer>> integers) {
        if (numRows <= 0) {
            return integers;
        }
        List<Integer> list = new ArrayList<>();
        if (integers == null || integers.size() <= 0) {
            list.add(1);
            integers = new ArrayList<>();
        } else {
            list.add(1);
            List<Integer> rowIntegers = integers.get(integers.size() - 1);
            for (int i = 0; i < rowIntegers.size() - 1; i++) {
                list.add(rowIntegers.get(i)+rowIntegers.get(i+1));
            }
            list.add(1);
        }
        integers.add(list);
        return generate(--numRows, integers);
    }
    //非递归写法
//    public static  List<List<Integer>> generate(int numRows) {
//        List<List<Integer>> result=new ArrayList<List<Integer>>();
//        for (int i=0;i<numRows;i++){
//            ArrayList<Integer> sub=new ArrayList<Integer>();
//            for (int j=0;j<=i;j++){
//                //第一个位置和最后一个位置的元素为1
//                if (j==0 || j==i){
//                    sub.add(1);
//                }else {
//                    //上一行的元素进行相加
//                    sub.add(result.get(i-1).get(j-1)+result.get(i-1).get(j));
//                }
//            }
//            result.add(sub);
//
//        }
//        return result;
//    }
}
